#ifndef __DIO_H__
#define __DIO_H__
#include "stm32f10x.h"
#include "sys_conf.h"

enum {
    DI_WATER_OVERFLOW_BPOS = 0,  //水浸
    DI_SMOKE_BPOS,               //烟感
    DI_FRONT_GM1_BPOS,           //前门磁1
    DI_BACK_GM1_BPOS,            //后门磁1
    DI_RESERVE_01,
    DI_RESERVE_02,

    DI_RESERVE_03,
    DI_RESERVE_04,
    DI_RESERVE_05,
    DI_RESERVE_06,
    DI_RESERVE_07,
    DI_RESERVE_08,
    DI_RESERVE_09,
    DI_RESERVE_0A,
    DI_RESERVE_0B,
    DI_RESERVE_0C,
    DI_RESERVE_0E,
    DI_RESERVE_0F,

    DI_POWER_LOSS_BPOS,  //电源掉电
    DI_RESERVE_10,
    DI_RESERVE_11,
    DI_RESERVE_12,
    DI_RESERVE_13,
    DI_RESERVE_14,
    DI_MAX_BPOS,
};

#define SLE2_PIN  GPIO_Pin_13
#define SLE2_GPIO GPIOC
#define SLE2_READ GPIO_ReadInputDataBit(SLE2_GPIO, SLE2_PIN)
enum {
    Com_Pad    = 0x01,
    Start_Init = 0x02,  //?????
};

void     drv_dio_init(void);
void     di_sts_update(sys_reg_st *gds_sys_ptr);
void     dio_set_do(uint16_t channel_id, BitAction data);
void     led_toggle(void);
uint8_t  GetSEL(void);
void     di_reg_update(void);
void     dio_reg_init(void);
void     drv_dio_bsp_init(void);
uint16_t drv_di_timer_init(void);
#endif  //__DIO_H__
